package rmaqlc31.basic;

import java.util.Scanner;

public class J08_Array {

	public static void main(String[] args) {
		// 배열 array
		// 동일한 종류의 여러개의 값들을
		// 저장할 수 있는 자료구조
		// 배열에 저장되는 내용을 요소element라 하고
		// 각 요소는 위치값index을 이용해서
		// 접근할 수 있음
		// 위치값은 0부터 시작함
		
		// 배열 변수 선언
		int numbers[];		// 정수형 배열
		double taxes[];		// 실수형 배열
		char names[];		// 문자 배열
		
		
		// 배열 생성
		numbers = new int[10];		// 10개의 정수저장
		taxes = new double[10];		// 10개의 실수저장
		names = new char[10];		// 10개의 문자저장
		
		System.out.println(numbers);
		System.out.println(taxes);
		System.out.println(names);
		
		System.out.println(numbers[0]);
		System.out.println(numbers[1]);
		System.out.println(numbers[9]);
		
		System.out.println(taxes[0]);
		System.out.println(taxes[1]);
		System.out.println(taxes[9]);
		
		System.out.println(names[0]);
		System.out.println(names[1]);
		System.out.println(names[9]);
		
		names[0] = '수';
		names[1] = '지';
		names[2] = '!';
		System.out.println(names);
		System.out.println(names[0]);
		System.out.println(names[1]);
		System.out.println(names[2]);
		System.out.println(""+names);
		
		// numbers에 1 ~ 10 까지 값 저장
		numbers[0] = 1;
		numbers[1] = 2;
		numbers[2] = 3;
		numbers[3] = 4;
		numbers[4] = 5;
		numbers[5] = 6;
		numbers[6] = 7;
		numbers[7] = 8;
		numbers[8] = 9;
		numbers[9] = 10;
		
		System.out.println(numbers[0]);
		System.out.println(numbers[2]);
		System.out.println(numbers[4]);
		System.out.println(numbers[6]);
		System.out.println(numbers[8]);
		
		// 반복문을 이용한 배열 처리
		for(int i=0; i<10; ++i){
			numbers[i] = i+1;
		}
		for(int i=1; i<=10; ++i){
			numbers[i-1] = i;
		}
		
		// 키보드로 입력받은 정수 5개를 그대로 출력
		Scanner sc = new Scanner(System.in);
		System.out.print("정수 5개를 입력하세요");
		/*int num1 = sc.nextInt();
		int num2 = sc.nextInt();
		int num3 = sc.nextInt();
		int num4 = sc.nextInt();
		int num5 = sc.nextInt();*/
		// 각 코드에 공통요소가 없기 때문에
		// 반복문으로 변경 불가!
		int nums[] = new int[5];
		/*nums[0] = sc.nextInt();
		nums[1] = sc.nextInt();
		nums[2] = sc.nextInt();
		nums[3] = sc.nextInt();
		nums[4] = sc.nextInt();*/
		// 각 코드에 공통요소가 있으므로
		// 반복문으로 변경 가능!
		
		for(int i=0;i<5;++i){
			nums[i] = sc.nextInt();
		}
		// 배열에 저장된 값을 출력하기
		/*System.out.println(nums[0]);
		System.out.println(nums[1]);
		System.out.println(nums[2]);
		System.out.println(nums[3]);
		System.out.println(nums[4]);*/
		// 각 코드에 공통요소가 있으므로
		// 반복문으로 변경 가능!
		for(int i=0;i<5;++i){
			System.out.println(nums[i]);
		}
		
		// 배열을 각 요소를 단순히 순차적으로
		// 처리할 목적이면 for-each문을 사용하는 것이 좋음
		for(int j : nums){
			System.out.println(j);
		}
		
		// 배열의 크기 알아내기 : 배열이름.length 속성이용
		System.out.println(nums.length);
		System.out.println(numbers.length);
		
		// 배열 사용시 볼 수 있는 오류
		double vals[] = new double[100];
		vals[0] = 100.0;
		// vals[100] = 100.0;
		// ArrayIndexOutOfBoundsException 발생
		vals[0] = sc.nextDouble();
		// InputMismatchException 발생
		
		
	}

}
